package Jogo;


public aspect JogoSuporte {
	pointcut inicioJogo(): execution (* Jogo.turno());	
	before(): inicioJogo(){
		System.out.println("Carregando ambiente de jogo...\n\n\n\n\n\n\n");
		for (int i = 0; i < Integer.MAX_VALUE; i++) {} //simular uma pequena pausa...
	}
	after(): inicioJogo(){
		System.out.println("Fim de jogo!");
	}
	

	public boolean Jogo.ganhou() {
		int numeroBombasObjetivo = (int)(this.getTabuleiro().getNumeroBombas()/2)+1;
		return (this.getJogador01().getBombasDescobertas() == numeroBombasObjetivo) || (this.getJogador02().getBombasDescobertas() == numeroBombasObjetivo);
	}
	
	public void Jogo.toConsole(boolean jogadorAtual, boolean tabuleiroRevelado) {
		System.out.println(this.exibePlacar()+this.exibeNumeroBombasRestantes()+this.exibeJogadorAtual(jogadorAtual)); //cabecalho
		System.out.println();
		System.out.println(this.getTabuleiro().toString(tabuleiroRevelado));
	}
	
	public String Jogo.exibePlacar() {
		String placarJogador01 = Integer.toString(this.getJogador01().getBombasDescobertas());
		String nomeJogador01 = this.getJogador01().getNome();
		String placarJogador02 = Integer.toString(this.getJogador02().getBombasDescobertas());
		String nomeJogador02 = this.getJogador02().getNome();
		return "| (+)"+nomeJogador01+" "+placarJogador01+" x "+placarJogador02+" "+nomeJogador02+"(-) "; 
	}
	
	public String Jogo.exibeJogadorAtual(boolean jogadorAtual) {
		String jogando = "";
		if(jogadorAtual) jogando = this.getJogador01().getNome();
		else jogando = this.getJogador02().getNome();
		return "| Jogando: "+jogando+"|";
	}

	public String Jogo.exibeNumeroBombasRestantes() {
		return "| Bombas restantes: "+Integer.toString(this.getTabuleiro().getNumeroBombasRestantes())+" ";
	}
	
	public void Jogo.mensagemVencedor(boolean jogadorAtual) {
		String vencedor = "";
		if(jogadorAtual) vencedor = this.getJogador01().getNome();
		else vencedor = this.getJogador02().getNome();
		System.out.println("Parabens "+vencedor+" voce eh o vencedor!!!"); 
		
	}
}
